#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<poll.h>

#define POLL_SIZE 100
#define POLL_TIMEOUT 3000
int main(){
    int event_count=0;
    //1.定义事件结构体数组，添加需要监控的描述符
    struct pollfd fds[POLL_SIZE];
    fds[0].fd=0;
    fds[0].events=POLLIN;//可读
    event_count++;
    while(1){
        //2.开始监控
        int ret=poll(fds,event_count,POLL_TIMEOUT);
        if(ret<0){
            perror("poll error");
            return -1;
        }
        else if(ret==0){
            printf("poll timeout!\n");
            continue;
        }
        //3.遍历数组对就绪的描述符进行操作
        for(int i=0;i<event_count;i++){
            if(fds[i].revents&POLLIN){
                //就绪了可读事件
                char buf[1024]={0};
                int ret=read(fds[i].fd,buf,1023);
                //出错了就要移除监控，不要对无效描述符进行监控
                if(ret<0) return -1;
                printf("buf:[%s]\n",buf);
            }
            if(fds->revents&POLLOUT){
                //就绪了写事件
            }
        }
    }    
}